| 从另一个数据表获得参数 如果参数的值既不是在设计期间指定,也不是在运行期间指定,就可以使用TQuery构件的DataSource属性用于指定一个数据源(TDataSource构件),在这个数据源中查找与参数名匹配的字段,然后用这个字段的值作为参数的值。 假设一个数据模块LinkModule,上面有一个TQuery构件叫OrdersQuery,它的SQL语句如下: SELECT CustNo, OrderNo, SaleDate FROM Orders WHERE CustNo = :CustNo 另外,数据模块上还有下列构件: (1)一个TTable构件叫CustomersTable,它的TableName属性设为CUSTOMER.DB。 (2)一个TDataSource构件叫OrdersSource,它的DataSet属性设为OrdersQuery。 (3)一个TDataSource构件叫CustomersSource,它的DataSet属性设为CustomersTable。 (4)OrdersQuery的DataSource属性也设为CustomersSource。 (5)窗体上有两个TDBGrid构件,它们的DataSource属性分别指定CustomersSource和OrdersSource。如果编译和运行这个应用程序,将看到如图所示的效果: 因为运行的时候没有对SQL语句中的:CustNo参数赋值,OrdersQuery将试图从CustomersSource指定的数据集中查找匹配的字段。由于CustomersSource是从CUSTOMER.DB中获取数据的,而CUSTOMER.DB中恰好有一个CustNo字段,所以,:CustNo参数的值就是CustNo字段的值。如果您在显示CUSTOMER.DB的数据表中选择了另一条记录,将导致:CustNo参数的值跟着变化。也就是说,两个TDBGrid已经建立的主从关系。因此,每次在Customers数据表中选择一条记录,OrdersQuery的Select语句执行,从Orders数据表中返回CustNo等于当前Customer数据表的CustNo的所有记录。 RainBow。策划制作 版权所有 |